/*
1.判断一个对象是否具有指定的方法
@param {Object} obj
@param {[]String} methodNames 方法名称
@returns {Boolean} 如果obj具有methodNames列出来的方法，返回true
如 
isImplements({
	 method1:function () {}
},["method1"]) 返回true

isImplements({
	 method1:function () {}
},["getName"]) 返回false
*/
function isImplements(obj,methodNames) {
	var methods = "";
	for(var method in obj){
		methods = method;
	}
	if(Object.prototype.toString.call(methodNames) == '[object Array]'){
		for(var i=0;i<methodNames.length;i++){
			if(methods == methodNames[i]) return true;
			else return false;
		}
	}else{
		if(methods == methodNames) return true;
			else return false;
	}
}

/*
2.实现类似jQuery中的each方法
@param {Array} list
@param {Function} f
*/
function each(list,f) {

}

/*
3.下面是一个简单的动画函数，将ele从页面中从左往右飞行，但是有错误，找出错误的原因，将它修改正确
@param {HTMLElement} ele
*/
function animateFly(ele) { 
	var max=600;
	ele.style.position = "absolute";
	for (var i=0;i<max;i++){
		setTimeout(function(){
			ele.style.left = i+"px";
		},i*10);
	}
}

var i=0;
function animateFly(fly){
	if(i<600)
	{
		css = fly.style;
		css.position = "absolute";
		css.left=i+"px";
		i++;
		setTimeout('animateFly(fly)',600/i);
	}
}
setTimeout('animateFly(fly)',600/i);
/*
function animate(){
	var ele  = document.getElementById("fly"); 
	var left = parseFloat(ele.style.left);
	var top  = parseFloat(ele.style.top);
	if(left < 500)
	{
		left++;	
	}
	if(left > 500)
	{
		left--;	
	}
	if(top < 500)
	{
		top++;	
	}
	if(top > 500)
	{
		top--;	
	}
	ele.style.left = left+"px";
	ele.style.top  = top+"px";
	move = setTimeout("animate()",10);
}
*/


/*
4.实现Class构造器，使得下面的testClassImplement能正确运行
*/
function Class(methods) {
	
}

function testClassImplement() {
	//保证Class构造函数的实现能使此函数正确运行，不会抛出错误
	var Person=new Class({
		getName:function () {
			return this.name;
		},
		setName:function (name) {
			this.name=name;
		},
		getAge:function () {
			return this.age;
		},
		constructor:function (name,age) {
			this.name=name;
			this.age=age;
		}
	});
	var CJ="CJ",age=21;
	var p1=new Person(CJ,age);
	assert(p1.getName(),CJ);
	assert(p1.getAge(),age);
	
}

function assert(a,b) {
	if (a!==b) {
		throw new Error('期望返回值为:'+b+",但得到的返回值却是:"+a);
	}
}